package com.example.nacosconfig.service;

import com.google.common.collect.Maps;

import java.util.Map;
import java.util.Scanner;

public class ArrayTest {
    public static void main(String[] args) {
        /*int [][] array = {{1,2,8,9},{2,4,9,12},{4,7,10,13},{6,8,11,15}};
        System.out.println(find2(10, array));*/

      /*  String str="AAAAAbbBccc";
        System.out.println(FirstNotRepeatingChar3(str));*/

        Scanner sc = new Scanner(System.in);
        while (sc.hasNext()) {
            int l = sc.nextInt();
            int r = sc.nextInt();

            System.out.println(cal(r) - cal(l - 1));
        }
    }

    /**
     * 在一个二维数组中（每个一维数组的长度相同），每一行都按照从左到右递增的顺序排序，
     * 每一列都按照从上到下递增的顺序排序。请完成一个函数，输入这样的一个二维数组和一个整数，
     * 判断数组中是否含有该整数。
     * 找出10
     * 1  2  8   9
     * 2  4  9  12
     * 4  7 10  13
     * 6  8 11  15
     * @param target
     * @param array
     * @return
     */
    public static boolean find(int target,int [][] array){
        if(array.length==0){
            return false;
        }
        //有几行数据
        int length= array.length;
        //每行有多少列
        int colums=array[0].length;
        int start=array[0][0];
        int end =array[length-1][colums-1];
        //如果目标数据小于第一个数据或者目标数据大于最后一个数据
        if(target< start || target> end){
            return false;
        }
        for (int i = 0; i <length ; i++) {
            for (int j = 0; j <colums ; j++) {
                if(target ==array[i][j]){
                    return true;
                }
            }
        }
        return false;
    }
    /**
     * 在一个二维数组中（每个一维数组的长度相同），每一行都按照从左到右递增的顺序排序，
     * 每一列都按照从上到下递增的顺序排序。请完成一个函数，输入这样的一个二维数组和一个整数，
     * 判断数组中是否含有该整数。
     * 找出10
     * 1  2  8   9
     * 2  4  9  12
     * 4  7 10  13
     * 6  8 11  15
     * @param target
     * @param array
     * @return
     */
    public static boolean find2(int target,int [][] array){
        if(array.length==0){
            return false;
        }
        //有几行数据
        int length= array.length;
        //每行有多少列
        int colums=array[0].length;
        int colum=0;
        int row =length-1;
        //从左下角开始查找，
        // 如果 m<target,向右边移动
         //如果m>target,向上移动
        while(row>=0 && colum<colums){
            if(array[row][colum]< target){
                colum ++;
            }else if (array[row][colum]> target){
                row --;
            }else{
             return true;
            }
        }
        return false;
    }

    public static int FirstNotRepeatingChar(String str) {
        int[] counts = new int[58];
        for(int i = 0; i < str.length(); i++)
            counts[str.charAt(i)-'A'] +=1;
        for(int i = 0; i < str.length(); i++)
            if(counts[str.charAt(i)-'A'] == 1)
                return i;
        return -1;
    }

    public static int FirstNotRepeatingChar2(String str) {
        Map<String,Integer> map = Maps.newHashMap();
        String key;
        int count;
        for(int i = 0; i < str.length(); i++){
            key =  String.valueOf(str.charAt(i));
            if (map.containsKey(key)) {
                count = map.get(key);
                map.put(key,count++);
            }else{
                map.put(key,1);
            }
        }
        for(int i = 0; i < str.length(); i++){

        }
        return -1;
    }
    public static int FirstNotRepeatingChar3(String str) {
        for (int i = 0; i < str.length(); i++) {
            char t = str.charAt(i);
            if (str.indexOf(t) == i && str.lastIndexOf(t) == i){
                return i;
            }
        }
        return -1;
    }

    private static int cal(int n) {
        int sum = n / 3 * 2;
        if (n % 3 == 2)
            return sum + 1;
        else
            return sum;
    }
}
